home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Comm / AmiTCP30b2.lha / src / util / ls / ls.h < prev    next >
C/C++ Source or Header  |  1994-02-24  |  3KB  |  114 lines

  1. /* $Id: ls.h,v 1.8 1994/01/21 13:29:21 ppessi Exp $
  2.  * 
  3.  * ls. - ls declarations and prototypes
  4.  *
  5.  * Copyright © 1991, 1993 Pekka Pessi. All rights reserved.
  6.  *
  7.  * Created      : Tue Jan 14 16:24:22 1992 ppessi
  8.  * Last modified: Thu Jan 20 16:46:28 1994 ppessi
  9.  */
  10.  
  11. #include <dos/dos.h>
  12. #include <dos/exall.h>
  13.  
  14. #define ExAllData myExAllData
  15.  
  16. /*
  17.  * An extended ExAllData structure 
  18.  */
  19. struct ExAllData {
  20.     struct ExAllData *ed_Next;
  21.     UBYTE  *ed_Name;
  22.     LONG    ed_Type;
  23.     ULONG    ed_Size;
  24.     ULONG    ed_Prot;
  25.     ULONG    ed_Days;
  26.     ULONG    ed_Mins;
  27.     ULONG    ed_Ticks;
  28.     UBYTE  *ed_Comment;    /* strings will be after last used field */
  29.     UWORD    ed_OwnerUID;    /* new for V39 */
  30.     UWORD    ed_OwnerGID;
  31.     /* NONSTANDARD */
  32.     ULONG   ed_Key;        /* # of key block, used for -i */
  33.     ULONG   ed_Blocks;    /* # of used blocks, used for -s */
  34. };
  35.  
  36. #ifndef ED_OWNER
  37. #define ED_OWNER (ED_COMMENT+1)
  38. #endif
  39. #define ED_BLK   (ED_COMMENT+2)
  40.  
  41. #include <clib/dos_protos.h>
  42. #include <clib/exec_protos.h>
  43. #include <clib/usergroup_protos.h>
  44.  
  45. struct ExAllList {
  46.   struct ExAllList * El_Next;
  47.   int                El_Number;    
  48.   struct ExAllData   El_Data;
  49. };
  50.  
  51. struct options {
  52.   unsigned int    longformat : 1;        /* -l */
  53.   unsigned int  group : 1 ;        /* -g */
  54.   unsigned int  sort_time : 1;        /* -t */
  55.   unsigned int  all : 1;        /* -a */ 
  56.   unsigned int  dotted : 1;        /* -A */ 
  57.   unsigned int  kilos : 1;        /* -s */
  58.   unsigned int  dir : 1;        /* -d */
  59.   unsigned int  reverse : 1;        /* -r */
  60.   unsigned int  inode : 1;        /* -i */
  61.   unsigned int  fast : 1;        /* -f */
  62.   unsigned int  filetype : 1;        /* -F */
  63.   unsigned int  symbolic : 1;        /* -L */
  64.   unsigned int  recursion : 1;        /* -R */
  65.   unsigned int    multicolumn : 1;    /* -C */
  66.   unsigned int    singlecolumn : 1;    /* -1 */
  67.   unsigned int    nongraph : 1;        /* -q */
  68.   unsigned int  pathname : 1;            /* -p */
  69. };
  70.  
  71. extern BPTR Stdin;
  72. extern BPTR Stdout;
  73. extern BPTR Stderr;
  74.  
  75. #define EXDATASIZE 4096        /* size for exall buffer */
  76. #define EXLISTSIZE (EXDATASIZE + sizeof(struct ExAllList))
  77. #define MYNOMEMERR -2
  78.  
  79. #define MAXFILENAMELEN 32
  80. #define MAXPATHLEN 1024
  81.  
  82. __inline static int max(int a, int b) { return a > b ? a : b; }
  83.  
  84. /* ls.c */
  85. extern struct options options;
  86.  
  87. /* short.c */
  88. extern void doprint(char *, const struct ExAllList *, struct options);
  89.  
  90. /* list.c */
  91. extern void bfree(volatile struct ExAllList *);
  92. extern struct ExAllList *listdir(char *name, struct options );
  93. extern struct ExAllList *listpatterns(int patc, char **patv, struct options);
  94.  
  95. /* sort.c */
  96. extern void quick_sort(void *slots[], int size, int(*compare)(void *, void *));
  97.  
  98. /* user.c */
  99. UBYTE *user(UWORD);
  100. UBYTE *group(UWORD);
  101.  
  102. #ifdef __SASC
  103. #define INLINE __inline
  104. extern struct Library *DOSBase;
  105. #include <pragmas/dos_pragmas.h>
  106. extern struct ExecBase *SysBase;
  107. #include <pragmas/exec_sysbase_pragmas.h>
  108. extern struct Library *UtilityBase;
  109. #include <pragmas/utility_pragmas.h>
  110. #endif
  111. #ifdef __GNUC__
  112. #define INLINE __inline__
  113. #endif
  114.